To print a document created by the user from an application program running on a computer such as a PC, print data of the document is transferred to a printing-associated processing program such as a printer driver via an OS (Operating System). The printer driver transmits dedicated instruction data to a printer apparatus, thereby printing the document. Data transferred from the application program to the printer driver are roughly classified into two: print setting information which describes a format and input/output settings compatible with the printer, and drawing data for reproducing an actual document.
The ranges of setting values designated by print settings are limited to only functions and ranges which can be designated by the printer, but the application program does not know all the functions of the printer. An interface which is provided to the application program by the operating system and used to designate print settings is limited to basic functions which are considered to be supported by every printer, for example, designation of the paper size and sheet feed cassette, setting of the delivery tray, setting of single-/double-sided printing, and monochrome/color setting. The printer driver provides only an interface which informs the application of ranges of these basic functions that can be designated by the printer. However, functions of the printer are not limited to them, and the printer driver must extend print settings in order to use various functions of the printer apparatus, such as a detailed color matching function and many finishing functions including stapling.
The application uses one area to save print settings, and this area is divided by contents into a basic area which is provided by the operating system and an extension area which can be freely extended by the printer driver. To extend print settings, the printer driver stores unique settings in the extension area. Since data in the extension area cannot be directly known by the application program, various functions of the printer are set by prompting the user to set them with a user interface or application programming interface (API) unique to the printer driver.
Conventional formats for saving print settings are a DEVMODE data structure (structure which holds information on the initialization and environment of a device) which is ensured in a memory area, and a job ticket (print ticket) for saving data in the XML format of a markup language which describes data with tags. The DEVMODE data structure is a binary data structure, and printer drivers of respective vendors can relatively freely arrange data in the extension area. Due to the freely extendable structure, however, the extension area cannot be understood by printer drivers except one which internally knows the specifications of the extension area. Since a job ticket which saves data in the XML format has a text data structure, the printer driver can acquire all data of the job ticket by reading tags one by one. However, the basic and extension areas are discriminated by assigning different name spaces. If a name space has the same tag name but is unknown to the printer driver, the printer driver cannot understand a function of the printer that corresponds to acquired data.
As described above, settings in the extension area change depending on the vender of a printer driver or the printer apparatus. To attain optimal settings desired by the user, the user must perform setting every printing by using the user interface or application programming interface of a printer driver which is unique to the printing apparatus and is output before printing. Although how to hold print settings changes depending on the application, an application which saves print settings in a document inherits print settings created by a printer driver of another vendor. Of print settings created by a printer driver of another vendor, setting information in the basic area is inherited, but setting information unique to the printer apparatus in the extension area is not inherited. Thus, in the worst case, print processing fails unless the user performs setting again.
To solve this problem, there is proposed a mechanism of performing print processing by issuing an instruction to a printer driver capable of reading data from the extension area, and complementing data on the basis of setting information in the basic area (e.g., Japanese Patent Laid-Open No. 2003-162394). According to this method, print settings dedicated to respective controllable printer drivers are held, and print settings dedicated to a printer driver necessary for a printer used to print are applied. If print settings dedicated to a necessary printer driver are not held, print settings are created again via the application programming interface of the printer driver. This mechanism can be implemented because setting information in the basic area contains the device name of a printer in print settings.
If an application holds a plurality of types of print settings but does not have print settings dedicated to the printer driver of a printer which actually prints, all pieces of information in the extension area that are used to set various printer functions cannot be set by only setting information in the basic area. Only half-finished settings are stored in the extension area, and in some cases, all pieces of setting information in the extension area are not reflected, and only the initial values of the printer driver are used. In creating a plurality of types of print settings, a printer driver which is dedicated to a printer and finally output does not always exist. If no dedicated printer driver exists, print settings must be done again via the user interface or application programming interface in printing. In resetting, since the application programming interface is unique to each printer driver, an application cannot use the interface of a printer driver of an unknown vendor and cannot set information in the extension area. It is difficult for the user to understand which actually set functions are inherited and which functions are not. Functions in the extension area that are added as needed and correspond to a new printer of each vendor cannot be followed. The user cannot grasp print settings used to execute print processing, and makes settings again for a printer driver which is actually output.